import { createStore } from 'vuex'
import axios from 'axios'
export default createStore({
  strict: true,
  state: {
    count: 10,
    cates: []
  },
  /*
    相当于vuex中计算属性，基于 仓库已有的state 进行计算得到新的值
    且也会根据依赖进行结果缓存，多次使用时，依赖变化使用缓存
  */
  getters: {
    doubleNum (state) {
      // 计算返回计算后新值即可
      return state.count * 2
    }
  },
  actions: {
    FETCH_CATES ({ commit }, params = {}) {
      /*
        context 就是vuex仓库实例  commit方法
      */
      axios.get('https://api.it120.cc/conner/shop/goods/category/all', {
        params
      }).then(res => {
        if (res.data.code === 0) {
          commit('INIT_CATES', res.data.data)
        }
      })
    }
  },
  mutations: {
    INIT_CATES (state, cates) {
      state.cates = cates
    },
    /*
      建议命名为全部大写加_  1 更为醒目 2 避免和组件自己方法冲突
    */
    ADD_NUM (state, num) {
      state.count += num
    }
  },
  modules: {
  }
})
